package com.itheima.reggie.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itheima.reggie.entity.Category;
import com.itheima.reggie.entity.Dish;
import com.itheima.reggie.entity.dto.DishDto;
import com.itheima.reggie.entity.dto.PageQueryDto;

import java.util.List;

/**
 * @Name DishService
 * @Author BaiXin
 * @Date 2022-11-02 10:01
 */
public interface DishService {
    /**
     * 新增菜品，包括菜品和口味并检查菜品名是否重复
     *
     * @param dishDto 要新增的菜品信息DTO对象
     * @return 是否新增成功
     */
    Boolean saveWithCheckNameAndSaveFlavors(DishDto dishDto);

    /**
     * 分页查询
     *
     * @param pageQueryDto 分页查询条件
     * @return 分页对象
     */
    Page<Dish> pageOrigin(PageQueryDto pageQueryDto);

    /**
     * 分页查询包含菜品分类名称
     *
     * @param pageQueryDto 分页查询条件
     * @return 分页对象
     */
    Page<DishDto> page(PageQueryDto pageQueryDto);
    /**
     * 根据id查询菜品详情
     * @param id 菜品id
     * @return  菜品dto对象
     */
    DishDto findById(Long id);

    /**
     * 更新
     * @param dishDto 新的菜品对象
     * @return         操作是否成功
     */
    boolean updateByIdWithFlavors(DishDto dishDto);

    /**
     * 批量修改状态
     * @param status 修改状态值
     * @param ids
     * @return
     */
    boolean switchStatus(Integer status, Long[] ids);

    /**
     * 根据条件查询菜品
     *
     * @param dish 菜品条件
     * @return 菜品基本数据
     */
    List<Dish> findByCondition(Dish dish);
    /**
     * 根据条件查询菜品 包括口味
     *
     * @param dish 菜品条件
     * @return 菜品基本数据
     */
    List<DishDto> findByConditionAndDishFlavors(Dish dish);
}
